/**
 * 验证手机号
 * @param phone
 * @returns {boolean}
 */
function validatePhoneNum (phoneNum) {
  const reg = /^1[3456789]\d{9}$/
  return reg.test(phoneNum)
}

/**
 * 验证固话号码
 * @param phone
 * @returns {boolean}
 */
function validateFixPhoneNum (fixPhoneNum) {
  // 正确的固话号码格式为：0000-0000000
  const reg = /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/
  return reg.test(fixPhoneNum)
}

/**
 * 验证微信号
 * @param {*} email
 * @returns {boolean}
 */
function validateWeChatNum (weChatNum) {
  const reg = /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/
  return reg.test(weChatNum)
}

/**
 * 验证身份证号
 * @param {*} email
 * @returns {boolean}
 */
function validateIdCardNo (idCardNo) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  return reg.test(idCardNo)
}

/**
 * 验证邮箱
 * @param {*} email
 * @returns {boolean}
 */
function validateEmail (email) {
  const reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
  return reg.test(email)
}

/**
 * 生成uuid
 * @returns {string}
 */
function genUUID () {
  const s = []
  const hexDigits = '0123456789abcdef'
  for (let i = 0; i < 36; i++) {
    s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
  }
  // bits 12-15 of the time_hi_and_version field to 0010
  s[14] = '4'
  // bits 6-7 of the clock_seq_hi_and_reserved to 01
  s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
  s[8] = s[13] = s[18] = s[23] = ''
  return s.join('')
}

/**
 * 获取session存储的数据
 * @param key
 * @returns {*}
 */
function getSessionStorage (key) {
  if (key == null) { return null }
  return JSON.parse(sessionStorage.getItem(key))
}

/**
 * 将数据保存到session中
 * @param key
 * @param value
 */
function setSessionStorage (key, value = '') {
  if (key == null) { return }
  sessionStorage.setItem(key, JSON.stringify(value))
}

/** 引入base64 */
const Base64 = require('js-base64').Base64
/**
 * 转为base64
 * @param value
 */
function encodeBase64 (value) {
  if (value == null) { return null }
  return Base64.encode(value)
}
/**
 * 解码base64
 * @param value
 */
function decodeBase64 (value) {
  return Base64.decode(value)
}

/**
 * 将方法暴露出去
 */
export default {
  validatePhoneNum,
  validateFixPhoneNum,
  validateWeChatNum,
  validateIdCardNo,
  validateEmail,
  genUUID,
  getSessionStorage,
  setSessionStorage,
  encodeBase64,
  decodeBase64
}
